home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DS-CD ROM 2 1993 August
/
DS CD-ROM 2.Ausgabe (August 1993).iso
/
programm
/
ds0334
/
sim51_04.arj
/
HEX.DOC
< prev
next >
Wrap
Text File
|
1993-02-01
|
5KB
|
150 lines
HEX-File Formate:
-----------------
Dieser File erhebt keinen Anspruch auf Vollständigkeit und es wird keine Ge-
währ gegen Fehler übernommen. Ergänzungen werden immer gerne entgegengenom-
men: Werner Hennig, Sulzgrieser Str. 101, 73733 Esslingen, 0711/376718.
Im Gegensatz zum Absolut-File Format oder Binär Format kann das HEX-File Format
mit einem Ascii-Editor gelesen werden. Es wird oft bei der Datenübertragung zu
EPROM-Programmiergeräten verwendet. Jeder "Record" belegt eine eigene Zeile im
HEX-File. Jede Zeile ist durch eine Carriage-Return/Line-Feed Sequenz abge-
schlossen.
Es gibt mehrere, von verschiedenen Firmen definierte HEX-Datei-Formate. Am be-
kanntesten ist das Intel-HEX Format. SIM51 lädt nur Files im Intel-Hex, Binär
und Intel-Absolut Format!
Intel-HEX-Format:
-----------------
Jede Zeile wird von einem ":" eröffnet. Dies dient bei der Datenübertrag-
ung zum EPROMmer als Start-Flag.
Danach folgt ein Byte (in Ascii-Hex-Darstellung), das die Anzahl der in die-
ser Zeile enthaltenen Code-Bytes enthält. (üblich 00 bis 10h)
Danach folgt ein Word (4 Ascii-Ziffern) mit der Adresse des ersten in dieser
Zeile enthaltenen Code-Bytes.
Danach folgt ein Kenn-Byte, das über den Typ dieses Records Aufschluß gibt:
00 = Code ist im Record enthalten
01 = Record dient als Ende Flag
02 = Offset-Adresse ist im Record enthalten (bei 8051 nicht relevant)
Danach folgen n Bytes Code (wie im 1.Byte angegeben).
Als letztes Byte folgt das Zweierkomplement der Quersumme über alle vorigen
Bytes aus dieser Linie (high Byte weggestrichen).
Beispiel:
:03FF0A000204D21C = Zeile mit 03 Codebytes ab Adresse 3FFh: 02 04 D2h
│└┤└┴┼┘└┤└┤└┤└┤└┤
│ │ │ │ │ │ │ └─── Check-Summe über alle vorigen Bytes in Zeile
│ │ │ │ └─┴─┴────── Code Bytes, hier 3
│ │ │ └───────────── Typ-Kennung, hier für Code
│ │ └───────────────── Adresse 0FF0Ah
│ └───────────────────── Anzahl der Code-Bytes, hier 3
└──────────────────────── Start-Flag
:00000001FF = Ende-Flag mit 0 Code-Bytes, Kennung 01
Beim Absolut-Hex Konvertierprogramm von Keil können optional zusätzlich
Symbol-Informationen in den Hex-File aufgenommen werden. Die Symbol-Informa-
tionen stehen dabei am Anfang des Files, vor dem ersten ':'. Die Symbol-
Informationen sind allerdings nicht sehr aussagekräftig, da nicht unter-
schieden wird zwischen Modul-Name, CODE, XDATA, DATA, IDATA, BIT, NUMBER.
Für jeden Symboleintrag werden nur ASCII-Zeichen verwendet. Pro Zeile ist
1 Symbol angeschrieben und zwar in der Form: "0 SymbolName Wert"
MOS Technology Hex Format:
--------------------------
Beispiel:
;03FF0A0204D201E4
│└┤└┴┼┘└┤└┤└┤└┴┼┘
│ │ │ │ │ │ └─── Check-Summe über alle vorigen Bytes in Zeile
│ │ │ └─┴─┴─────── Code Bytes, hier 3
│ │ └─────────────── Adresse, hier 0FF0Ah
│ └─────────────────── Anzahl der Code-Bytes, hier 3
└─────────────────────── Start-Flag
;00 = Ende-Flag mit 0 Code-Bytes
EASM51 - HEX Format (elektor Assembler):
-----------------------------------------
Beispiel:
03 FF0A:02 04 D2 00D8
└┤ └┴┼┘ └┤ └┤ └┤ └┴┼┘
│ │ │ │ │ └─── Check-Summe nur über die Code-Bytes in Zeile
│ │ └──┴──┴──────── Code Bytes, hier 3
│ └─────────────────── Adresse, hier 0FF0Ah
└──────────────────────── Anzahl der Code-Bytes, hier 3
Ein Ende-Flag gibt es nicht. Man beachte, daß die Datei SPACEs zwischen
den einzelnen hexadezimal dargestellten Bytes bzw. Words enthält. Nach der
Adresse steht ein ":". Es gibt kein Startzeichen.
Motorola - HEX Format:
----------------------
Beispiel:
S106FFF00204D232
├┘└┤└┴┼┘└┤└┤└┤└┤
│ │ │ │ │ │ └─── Einerkomplement der Check-Summe über vorige Bytes
│ │ │ └─┴─┴────── Code Bytes + 3, hier 3+3 = 6
│ │ └────────────── Adresse
│ └────────────────── Anzahl der Code-Bytes, hier 3
└────────────────────── Start-Flag und Typ-Kennung, hier Code
S9030000FC Ende-Flag, mit 0 Code-Bytes
Typ S0 = Sign-On-Record (ist optional)
Typ S1 = Zeile mit Code
Typ S9 = Ende Flag
Tektronix - HEX Format:
-----------------------
Beispiel:
/000003030204D2D8
│└┴┼┘└┤└┤└┤└┤└┤└┤
│ │ │ │ │ │ │ └── Check-Summe über Code-Bytes, High Byte weggestrichen
│ │ │ │ └─┴─┴───── Code Bytes, hier 3
│ │ │ └──────────── Check-Summe über vorige Bytes
│ │ └─────────────── Anzahl der Code-Bytes, hier 3
│ └─────────────────── Adresse
└─────────────────────── Start-Flag und Typ-Kennung, hier Code
/00000000 Ende-Flag